The present invention relates generally to remote procedure calls, and more specifically, to providing remote procedure calls with call-by-reference semantics using remote direct memory access.
A remote procedure call (RPC) is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space, such as on another computer on a shared network, without the programmer explicitly coding the details for this remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program or remote. During the early development of RPC, network bandwidth was scarce, network latency was high, and central processing unit (CPU) clock speed was increasing under Moore's law. Accordingly, RPC function calls were typically defined over functions with simple signatures, which accepted mostly base types as arguments, to avoid large data transfers. This ensured that network transfer time was small compared to function execution time. These functions, however, still required a significant amount of computation.